package web

import (
	"net/http"
)

// ViewFunc func
type ViewFunc func(http.ResponseWriter, *http.Request)

// Auth 验证Token是否已经通过
func Auth(f ViewFunc) ViewFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		//tokenInCookie, err := r.Cookie("token")
		f(w, r)
		//if err != nil {
		//	http.Redirect(w, r, "./login", http.StatusTemporaryRedirect)
		//	return
		//}
		//
		//conf, _ := config.GetConfigCached()
		//
		//// 禁止公网访问
		//if conf.NotAllowWanAccess {
		//	if !util.IsPrivateNetwork(r.RemoteAddr) {
		//		w.WriteHeader(http.StatusForbidden)
		//		util.Log("%q 被禁止从公网访问", util.GetRequestIPStr(r))
		//		return
		//	}
		//}
		//
		//// 验证token
		//if tokenInSystem != "" && tokenInSystem == tokenInCookie.Value {
		//	f(w, r) // 执行被装饰的函数
		//	return
		//}
		//
		//http.Redirect(w, r, "./login", http.StatusTemporaryRedirect)
	}
}

// AuthAssert 保护静态等文件不被公网访问
func AuthAssert(f ViewFunc) ViewFunc {
	return func(w http.ResponseWriter, r *http.Request) {

		//conf, err := config.GetConfigCached()

		//// 配置文件为空, 启动时间超过3小时禁止从公网访问
		//if err != nil &&
		//	time.Now().Unix()-startTime > 3*60*60 && !util.IsPrivateNetwork(r.RemoteAddr) {
		//	w.WriteHeader(http.StatusForbidden)
		//	util.Log("%q 配置文件为空, 超过3小时禁止从公网访问", util.GetRequestIPStr(r))
		//	return
		//}
		//
		//// 禁止公网访问
		//if conf.NotAllowWanAccess {
		//	if !util.IsPrivateNetwork(r.RemoteAddr) {
		//		w.WriteHeader(http.StatusForbidden)
		//		util.Log("%q 被禁止从公网访问", util.GetRequestIPStr(r))
		//		return
		//	}
		//}

		f(w, r) // 执行被装饰的函数

	}
}
